A social network consists of individuals and their relationships to other individuals. For example, within a company, the employees and their relationships to other employees, such as being members of the same development team or the same management committee, form a social network. Each of the employees may also have relationships to their family members and other non-family friends. Each relationship within a social network specifies a direct relationship between two individuals, such as being members of the same team. Individuals may also have indirect relationships with other individuals. For example, Tom and Mary may not know each other, but both Tom and Mary have a relationship with Jim. In such a case, Tom and Mary would have an indirect relationship to each other through Jim. The distance (number of relationships) between two individuals within a social network is commonly referred to as their “degree of separation.” For example, Tom and Mary would have two degrees of separation. Because social networks can have hundreds or thousands of individuals and direct relationships, social networks can be very complex. It would be a difficult and time-consuming task to identify individuals and all their relationships within a large social network.
Fortunately, the identity of individuals and their relationships with other individuals can be automatically derived from data stored by computer systems. Many individuals use their computer systems to store indications of relationships to other individuals. In particular, many software applications allow a user to explicitly store names of others with whom the user has a relationship. (“User” refers to any individual who has a relationship represented on a computer system.) The names (or some other identifiers such as electronic mail addresses) of the other users are stored in address lists for electronic mail programs, in contact lists for instant messaging programs, in invitation lists for event organizing programs, and so on. In addition, the names of the other users can be derived from data that is not an explicit list. For example, the names of users can be derived from the to, from, and cc fields of electronic mail messages, from meeting entries within a calendar, from letters stored as electronic documents, and so on. Each of these other users has a relationship, referred to as a direct relationship, with the user regardless of the “closeness” of the relationship. For example, a user may have a relationship with a co-worker and a relationship with a worker at another company that was cc′d on the same electronic mail message. In this example, the relationship with the co-worker may be closer than the relationship with the worker at the other company. The users with whom a user has a relationship are referred to generally as “contacts” of that user.
In many situations, a user may need to get in touch with their contacts. For example, a user who is a moving to a new job or moving to a new house may want to notify their contacts of the move. As another example, when a user is considering moving to a new job or needs advice on a particular subject, the user may seek advice from their contacts. The user may also request a contact to seek advice on that user's behalf from the contact's contact. Relying on contacts to propagate a request through a social network can be ineffective and even undesirable in certain situations. For example, as the request propagates from contact to contact, important aspects of the request may be omitted or changed, resulting in any response being ineffective. Also, the request may propagate to a contact even though the original requester would not want that contact to know about the request. For example, an employee requesting information about job openings at other companies would not want that request to propagate to a user at the requester's current company.